/*
 * Copyright 2010-2011 WebEqua Team
 * 
 * Licensed under the Apache License, Version 2.0 (the "License"); you may not
 * use this file except in compliance with the License. You may obtain a copy of
 * the License at
 * 
 * http://www.apache.org/licenses/LICENSE-2.0
 * 
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
 * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
 * License for the specific language governing permissions and limitations under
 * the License.
 */

package org.mathcloud.math.core.maple.manager;

//import class slf4j
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
//import class com.maplesoft
import com.maplesoft.openmaple.Engine;
import com.maplesoft.openmaple.EngineCallBacksDefault;
import com.maplesoft.externalcall.MapleException;

public class MapleSupervisor
{
	
	private static Engine mapleEngine  =null;
	private static int mapleVarId = 0;
	private static final Logger log = LoggerFactory.getLogger(MapleSupervisor.class);
	
	public static int getVarId()
	{
		mapleVarId ++;
		return mapleVarId;
	}
	
	public static synchronized Engine getMapleEngine()
	{
		if (mapleEngine!=null)
			return mapleEngine;
		else
		{
		  try
			{
				mapleEngine = new Engine( new String[] {"java"}, 
						                      new EngineCallBacksDefault(), 
						                      null, 
						                      null);
		  	return mapleEngine;
			} catch (MapleException e)
			{
				log.error("Get maple engine - ",e);
				return null;
			}
		}
	}
}
